#include "Thread.hpp"
#include <unordered_map>
#include <memory>

#define NUM 10

class threadDate
{
public:
    int max;
    int start;
};

void Count(threadDate td)
{
    for(int i=td.start;i<td.max;i++)
    {
        std::cout<<"i == "<<i<<std::endl;
        sleep(1);
    }
}

int main()
{
    //ThreadModule::Thread<int> t(Count,10);

    threadDate td;
    td.max = 60;
    td.start = 50;
    ThreadModule::Thread<threadDate> t(Count,td);

    t.Start();

    t.Join();

    return 0;
}





// void Count(int n)
// {
//     for(int i=0;i<n;i++)
//     {
//         std::cout<<"i == "<<i<<std::endl;
//         sleep(1);
//     }
// }

// int main()
// {
//     std::unordered_map<std::string,thread_ptr_t> threads;
//     //创建多线程
//     for(int i = 0;i < NUM;i++)
//     {
//         thread_ptr_t t = std::make_shared<ThreadModule::Thread>([](){
//             while(true)
//             {
//                 std::cout<<"love wll"<<std::endl;
//                 sleep(1);
//             }
//         });
//         threads[t->Name()] = t;//map里的插入，没有插入，有不插入
//     }

//     //pair是键值对，第一个成员是first，第二个是second
//     for(auto &n:threads)
//     {
//         n.second->Start();
//     }

//     for(auto &n :threads)
//     {
//         n.second->Join();
//     }

//     return 0;
// }



// int main()
// {
//     ThreadModule::Thread t([]()
//                            {
//         while(true)
//         {
//             std::cout<<"wll love "<<std::endl;
//             sleep(1);
//         } });
//     t.Start();
//     std::cout << t.Name() << "is running" << std::endl;
//     sleep(5);

//     t.Stop();
//     std::cout << "Stop thread: " << t.Name() << std::endl;
//     sleep(1);

//     t.Join();
//     std::cout << "join thread: " << t.Name() << std::endl;
//     return 0;
// }